package org.smart4j.chapter1.util;

public class CastUtil {

	public static int castInt(Object obj) {
		return CastUtil.castInt(obj,0);
	}

	public static int castInt(Object obj, int defaultValue) {
		int doubleValue = defaultValue;
		if(obj != null){
			String strValue = castString(obj);
			if(StringUtil.isNotEmpty(strValue)){
				try{
					doubleValue = Integer.parseInt(strValue);
				} catch(NumberFormatException e){
					doubleValue = defaultValue;
				}
			}
		}
		return doubleValue;
	}

	public static boolean castBoolean(Object obj) {
		return CastUtil.castBoolean(obj,false);
	}
	
	public static boolean castBoolean(Object obj, boolean defaultValue) {
		boolean booleanValue = defaultValue;
		if(obj != null){
			booleanValue = Boolean.parseBoolean(castString(obj));
		}
		return booleanValue;
	}

	public static String castString(Object obj){
		return CastUtil.castString(obj,"");
	}

	public static String castString(Object obj, String defalutValue) {
		return obj != null ? String.valueOf(obj):defalutValue;
	}
	
	public static double castDouble(Object obj){
		return CastUtil.castDouble(obj,0);
	}

	public static double castDouble(Object obj, double defaultValue) {
		double doubleValue = defaultValue;
		if(obj != null){
			String strValue = castString(obj);
			if(StringUtil.isNotEmpty(strValue)){
				try{
					doubleValue = Double.parseDouble(strValue);
				} catch(NumberFormatException e){
					doubleValue = defaultValue;
				}
			}
		}
		return doubleValue;
	}

	public static long castLong(Object obj){
		return CastUtil.castLong(obj,0);
	}

	private static long castLong(Object obj, long defaultValue) {
		long longValue = defaultValue;
		if(obj != null){
			String strValue = castString(obj);
			if(StringUtil.isNotEmpty(strValue)){
				try{
					longValue = Long.parseLong(strValue);
				} catch(NumberFormatException e){
					longValue = defaultValue;
				}
			}
		}
		return longValue;
	}
	
}
